package com.dxf.chepter08

/**
 * scala集合介绍:
 * 1 scala同时支持不可变集合(线程安全)和可变集合
 * 2 主要包:
 *        scala.collection.immutable
 *        scala.collection.mutable
 * 3 scala默认采用不可变集合.对于几乎所有的集合类,scala都同时提供了可变mutable 和不可变 immutable的版本
 * 4 scala集合有三类, 序列Seq ,集Set.映射Map,所有集合都扩展自Iterable特质,在Scala中集合有可变mutable 和
 * 不可变immutable两种类型
 *
 *
 *
 *
 *
 * 不可变集合 :
 *
 *                    SortedSet -- TreeSet
 *                      HashSet
 *          --Set --- BitSet
 *                     ListSet
 *
 *                        SortedMap   -- TreeMap
 * Iterable    --Map --- HashMap
 *                        ListMap
 *                        Vector
 *              --Seq  --- IndexedSeq(索引序列) --  NumericRange
 *                          Array(数组)
 *                          String
 *                            Range
 *
 *                            List
 *                  LinearSeq(线性序列)  --   Stream            有头有尾
 *                      Queue(队列)
 *                              Stack(栈)
 *
 *
 * 可变集合,比不可变集合范围更大
 *
 *
 * ============================================
 *
 *  1 Scala中的List和 Java List不一样,Java中List是一个接口
 *  2 scala中List可以直接存放数据,是一个Object,
 *  3 默认情况下Scala的List是不可变,List属于序列 Seq
 *
 *  4 List中可以放任何数据
 *  5 如果希望得到一个空列表,可以使用对象Nil,在scala包对象申明的,不需要引入其它包
 *
 *
 *============================================
 *
 *    List元素的追加:
 *    向List列表中追加新的元素,会返回一个新的列表,比较消耗性能
 *
 *    +号靠近元素,: 靠近集合
 *    1 在列表的最后增加数据:  val list2 = list1 :+ 4
 *
 *    2 在列表的最前面增加数据 val list2 =4 +: list1
 *
 *    3 向集合中 新建集合添加元素   ::
 *      从右向左,最右边一定是一个集合对象
 *
 *   4 将A集合中的每一个元素加入到B空集合中  :::
 *
 * ======================================================
 *
 *
 *
 *
 *
 *
 *
 *
 *
 */
object T85_List {


  def main(args: Array[String]): Unit = {
    //1 默认下List 是 scala.collection.immutabe.List 不可变
    //2 在scala中List就是不可变的,如果需要可变的list,使用ListBuffer
    //3 list在scala的包对象中
    val list01 = List(1, 2, 3)
    println(list01)
    //Nil 空集合  和 null不是一个概念
    val list02 = Nil
    println(list02)
    println(list01(1)) //2

    //List元素的追加
    //

    var list03 = list01 :+ "--"
    println(list03)
    println(list01)

    // ==========================

    var list4 = List(1, 2, 3, "aq")
    //在列表的最后添加数据,集合中添加集合 , 从右向左
    var list5 = 4 :: 5 :: 6 :: list4 :: Nil

    println(list5) // List(4, 5, 6, List(1, 2, 3, aq))

    //::: 把集合打散在放入,顺序不变
    var list6 = 4 :: 5 :: 6 :: list4 ::: Nil //List(4, 5, 6, 1, 2, 3, aq)
    println(list6)


  }


}

